﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Microsoft.Xna.Framework.Graphics;
using Microsoft.Xna.Framework;

namespace PyramidShadow
{
    /*
     * In here, the Levels get designed.
     */
    struct map_Members 
    { 
        public Texture2D map_tex_bg;
        public Texture2D map_tex_cm;
    }

    struct body_Members
    {
        public Texture2D body_tex;
        public Vector2 body_pos;
    }

    struct ghost_Members
    {
        public Texture2D ghost_tex;
        public Vector2 ghost_pos;
    }

    struct exit_Members
    {
        public Texture2D exit_tex;
        public Vector2 exit_pos;
    }

    struct block_Members
    {
        public Texture2D block_tex;
        public List<Vector2> block_positions;
    }

    struct floorButton_Members
    {
        public Texture2D floorButton_tex;
        public Vector2 floorButton_frameDim;
        public Vector2 floorButton_offset;
        public Vector2[] floorButton_positions;
        public PS_Event[] floorButton_events;
        public bool[] floorButton_reset;
    }

    struct sign_Members
    {
        public Texture2D sign_tex;
        public Vector2[] sign_positions;
        public PS_Event[] sign_events;
        public TextField[] sign_textFields;
    }

    class MapBuilder
    {
        protected map_Members mapMembers;
        protected body_Members bodyMembers;
        protected ghost_Members ghostMembers;
        protected exit_Members exitMembers;
        protected block_Members blockMembers;
        protected floorButton_Members floorButtonMembers;
        protected sign_Members signMembers;
        
        //protected Constructor
        protected MapBuilder();

        //Getters
        public map_Members MapMembers
        {
            get { return mapMembers; }
        }

        public body_Members BodyMembers
        {
            get { return bodyMembers; }
        }

        public ghost_Members GhostMembers
        {
            get { return ghostMembers; }
        }

        public exit_Members ExitMembers
        {
            get { return exitMembers; }
        }

        public block_Members BlockMembers
        {
           get { return blockMembers; }
        }

        public floorButton_Members FloorButtonMembers
        {
            get { return floorButtonMembers; }
        }

        public sign_Members SignMembers
        {
            get { return signMembers; }
        }
    }
}
